package com.example.performance;

import com.example.performance.web.PerformanceTestWebApplication;
import java.util.ArrayList;
import java.util.List;

/**
 * HTTP性能压测工具主程序
 * 程序入口点，支持CLI和Web两种模式
 */
public class PerformanceTesterMain {

    private static final String VERSION = "1.0.0";

    public static void main(String[] args) {
        System.out.println("HTTP性能压测工具 v" + VERSION);
        System.out.println("基于JDK 1.8开发");

        // 检查是否启动Web模式
        if (args.length > 0 && ("--web".equals(args[0]) || "-w".equals(args[0]))) {
            System.out.println("启动Web管理界面模式...");
            // 移除--web参数，传递其余参数给Spring Boot
            String[] springArgs = processSpringBootArgs(args);
            PerformanceTestWebApplication.main(springArgs);
            return;
        }

        System.out.println("使用 --help 参数查看详细使用说明");
        System.out.println("使用 --web 参数启动Web管理界面");

        if (args.length == 0) {
            printUsage();
            return;
        }

        // 简单的参数处理示例
        for (String arg : args) {
            if ("--help".equals(arg) || "-h".equals(arg)) {
                printHelp();
                return;
            } else if ("--version".equals(arg) || "-v".equals(arg)) {
                System.out.println("版本: " + VERSION);
                return;
            }
        }

        // 这里可以添加CLI模式的具体实现
        System.out.println("CLI模式功能开发中，请使用 --web 参数启动Web管理界面");
    }

    /**
     * 处理Spring Boot启动参数
     * 
     * @param args 原始参数数组
     * @return 处理后的Spring Boot参数数组
     */
    private static String[] processSpringBootArgs(String[] args) {
        List<String> springArgsList = new ArrayList<>();

        // 跳过第一个参数(--web)
        for (int i = 1; i < args.length; i++) {
            springArgsList.add(args[i]);
        }

        return springArgsList.toArray(new String[0]);
    }

    private static void printUsage() {
        System.out.println("用法: java -jar http-performance-tester.jar [选项]");
        System.out.println("使用 --help 查看完整帮助信息");
        System.out.println("使用 --web 启动Web管理界面");
    }

    private static void printHelp() {
        System.out.println();
        System.out.println("HTTP性能压测工具 v" + VERSION);
        System.out.println("========================================");
        System.out.println("基于场景的HTTP性能压测工具，支持多并发用户模拟");
        System.out.println();
        System.out.println("主要功能:");
        System.out.println("- 基于场景的压测配置");
        System.out.println("- 多并发用户模拟");
        System.out.println("- HTTP/HTTPS协议支持");
        System.out.println("- 详细的性能统计报告");
        System.out.println("- 多种报告格式输出");
        System.out.println("- Web管理界面支持");
        System.out.println();
        System.out.println("使用方式:");
        System.out.println("  CLI模式:");
        System.out.println("    java -jar http-performance-tester.jar --config config.yml");
        System.out.println("    java -jar http-performance-tester.jar --url https://api.example.com --users 10");
        System.out.println();
        System.out.println("  Web界面模式:");
        System.out.println("    java -jar http-performance-tester.jar --web");
        System.out.println("    java -jar http-performance-tester.jar --web --spring.profiles.active=dev");
        System.out.println("    java -jar http-performance-tester.jar --web --server.port=9090");
        System.out.println("    然后打开浏览器访问: http://localhost:8080");
        System.out.println();
        System.out.println("参数说明:");
        System.out.println("  --web, -w           启动Web管理界面");
        System.out.println("  --help, -h          显示帮助信息");
        System.out.println("  --version, -v       显示版本信息");
        System.out.println();
        System.out.println("Spring Boot配置参数:");
        System.out.println("  --spring.profiles.active=dev|prod  激活指定的配置环境");
        System.out.println("  --server.port=端口号               指定Web服务端口");
        System.out.println("  --logging.level.包名=级别          设置特定包的日志级别");
        System.out.println();
        System.out.println("更多详细信息请参考README.md文档");
    }
}